#ifndef PDFLOADER_H
#define PDFLOADER_H

#include <QObject>

class PdfLoaderPrivate;
class PdfLoader : public QObject
{
    Q_OBJECT
public:
    enum PdfError {
        NoError,
        FileLoadError,
        FileLockedError,
        PageLoadError,
        PageRenderError,
        OutOfMemory,
        stopped,
    };

    enum PdfDirection { Horizontal, Vertical };

    /**
     * @brief PdfLoader Pdf加载器
     * @param parent pdf显示窗体
     * @param direction 显示方向
     * @param maxMemory 允许占用的最大内存
     */
    PdfLoader(QWidget *parent, PdfDirection direction = Vertical, quint64 maxMemory = 500);
    ~PdfLoader();

    /**
     * @brief load 启动加载
     * @param fileName pdf文件名
     * @return
     */
    bool load(const QString &fileName);

signals:
    /**
     * @brief done 加载停止信号
     * @param info 加载结果
     */
    void done(const PdfError &info);

private:
    PdfLoaderPrivate *d;
};

Q_DECLARE_METATYPE(PdfLoader::PdfError)

#endif // PDFLOADER_H
